我正在尝试创建一个独立的进程来处理从相机获取的图像。但多处理似乎很难从 opencv 中提取视频捕获模块。任何人都可以建议解决方法吗?我正在使用 python 3.7.1
from multiprocessing import Process
import multiprocessing as mp
import time
import logging
import logging.handlers
import sys
import logging
from enum import Enum
import cv2
class Logger():
@property
def logger(self):
component = "{}.{}".format(type(self).__module__, type(self).__name__)
#default log handler to dump output to console
return logging.getLogger(component)
class MyProcess(Logger):
def __init__(self, ):
self.process = Process(target = self.run, args=())
self.exit = mp.Event()
self.logger.info("initialize class")
self.capture = cv2.VideoCapture(0)
def run(self):
while not self.exit.is_set():
pass
print("You exited!")
def shutdown(self):
print("Shutdown initiated")
self.exit.set() …Run Code Online (Sandbox Code Playgroud) 我正在尝试打包和分发用电子编写的应用程序。我注意到,当二进制文件构建完成时,本地资源/源代码也会在最终构建的文件夹中公开。
在资源/应用程序文件夹中,您将向任何可以访问的人公开您的所有源代码。
我想知道是否有办法隐藏这些信息,并只提供构建的二进制文件。
我正在使用 Electron 1.2 和 electro-packager 7.0.4
我在 warpPerspective 之前在原始图像下找到了一组坐标/点,如何在现在裁剪和校正的透视校正图像中获取相应的点?
例如:
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('sudoku.png')
rows,cols,ch = img.shape
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
point = np.array([[10,10]])
M = cv.getPerspectiveTransform(pts1,pts2)
dst = cv.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
Run Code Online (Sandbox Code Playgroud)
如何将 img 地图中的新坐标 [10,10] 获取到 dst 图像?
我编写了一个带有operator()重载的类,我想像传递函数指针一样将该类传递给线程,因此我将其放置在线程中,如下所示。但是,它未能编译,我注意到ofstream是它失败的原因。为什么会这样呢?
#include <thread>
#include <fstream>
using namespace std;
class dummy{
public :
dummy(){}
void operator()(){}
private:
ofstream file;
};
int main()
{
dummy dum;
thread t1(dum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)