我们一直在学习像 Sobel 和 Roberts 的卷积矩阵这样的方法来检测图像中的边缘,扩展到 Canny 方法来清除它们。但是现在,我们正在学习“线”检测,而不是“边缘”检测 - 使用霍夫变换等方法。
问题是 - 我什至不知道如何概念化“线”和“边缘”之间的区别。有人可以在不使用复杂的数学方程等的情况下向我解释这种差异吗?
image image-processing edge-detection straight-line-detection
我正在学习 Java,正在学习在线课程等,我正在进行其中一项编码练习,并意识到我的两种方法之间存在大量重复,如下所示:
private static void addCustomerTransaction() {
System.out.println("Enter the branch name:");
String branchName = scanner.nextLine();
System.out.println("Enter the customer name:");
String customerName = scanner.nextLine();
System.out.println("Enter the transaction");
while (!scanner.hasNextDouble()) {
scanner.next();
}
double transaction = scanner.nextDouble();
bank.addCustomerTransaction(branchName,customerName,transaction);
}
private static void addCustomer() {
System.out.println("Enter the branch name:");
String branchName = scanner.nextLine();
System.out.println("Enter the customer name:");
String customerName = scanner.nextLine();
System.out.println("Enter the transaction");
while (!scanner.hasNextDouble()) {
scanner.next();
}
double transaction = scanner.nextDouble();
bank.addCustomer(branchName,customerName,transaction);
}
Run Code Online (Sandbox Code Playgroud)
现在显然这两个函数之间的唯一区别是对银行类对象的方法调用 - 最终执行不同的操作。
我想知道如何重构这些方法以减少重复。我了解到:
private static void addCustomerTransaction() …Run Code Online (Sandbox Code Playgroud) 我在使用在界面中实现的私有方法时遇到问题。
我在接口print(string, list)中私有地实现了一个方法RequestData,以隐藏实现,因为我不希望除了类的其他打印方法之外调用它 - 但我将它包含在接口中,因为它与每个实现类都相同。
问题是,当我尝试使用printmy 中FundingRequests实现该RequestData接口的方法时,它显示错误 - 该print方法在接口中的访问RequestData是私有的,因此无法找到它。
好吧...如果接口的私有方法无法从实现类中访问,那么您应该如何使用它们呢?
这是一个错误,还是我误解了接口?
界面:
package com.landbay.datamodel.data;
import java.util.List;
public interface RequestData<E> {
void add(E newRequest);
List<E> getRequests();
List<E> getFulfilledRequests();
List<E> getUnfulfilledRequests();
void printRequests();
void printFulfilledRequests();
void printUnfulfilledRequests();
private void print(String listTitle, List<E> listToPrint) {
StringBuilder string = new StringBuilder();
string.append(listTitle);
for (E request : listToPrint) {
string.append("\n").append(request);
}
System.out.println(string);
}
}
Run Code Online (Sandbox Code Playgroud)
违规类和方法:
public class FundingRequests implements RequestData<FundingRequest> { …Run Code Online (Sandbox Code Playgroud)